package com.ja10.books;

import java.util.ArrayList;

import com.example.books.R;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;

public class FavoriteActivity extends Activity {

	SimpleDatabaseHelper helper = null;
	SQLiteDatabase db = null;
	SearchListAdapter<BookList> adapter = null;
	ArrayList<BookList> data = null;
	BookList item = null;
	ListView list = null;
	Intent i = null;
	int cnt = 0;	// 検索件数
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_favorite);
		
		// ヘルパーを準備
		helper = new SimpleDatabaseHelper(this);
		
		// 端末データベースの取得
		db = helper.getReadableDatabase();
		Cursor cs = db.query("myfavorites", null, null, null, null, null, "id desc");

		// 配列の内容をBookListオブジェクトに詰め替え
		data = new ArrayList<BookList>();
		
		boolean eol = cs.moveToFirst();
		while(eol) {
			BookList item = new BookList();
			item.setId(cs.getInt(0));
			item.setGenreName(cs.getString(1));
			item.setPublisherName(cs.getString(2));
			item.setTitle(cs.getString(3));
			item.setWriter(cs.getString(4));
			item.setContent(cs.getString(5));
			item.setRecordDate(cs.getString(6));
			item.setPublicationDate(cs.getString(7));
			item.setPictureBmp(cs.getBlob(8));
			item.setIsbn(cs.getString(9));
			data.add(item);
			cnt++;
			eol = cs.moveToNext();
		}
		cs.close();
		db.close();
		// 検索件数を取得
		TextView txtCnt1 = (TextView)findViewById(R.id.txtCnt1);
		String cntStr = Integer.toString(cnt);
		txtCnt1.setText(cntStr);
		
		// BookList配列とレイアウトを関連付け
		adapter = new SearchListAdapter<BookList>(this, data, R.layout.list_item_book, 1);

		// アダプターをもとにリストを生成
		list = (ListView)findViewById(R.id.listFavorite);
		list.setAdapter(adapter);
		list.setOnItemClickListener(new MyItemClickListener());
		registerForContextMenu(list);

	}
	
	// リストクリック時の処理
	public class MyItemClickListener implements OnItemClickListener {

		@Override
		public void onItemClick(AdapterView<?> av, View view, int position,
				long id) {
			
			Intent i = new Intent(getBaseContext(), BookDetailActivity.class);
			// ISBNをインテントにセット
			i.putExtra("isbn", data.get(position).getIsbn());
			startActivity(i);
		}
		
	}
	
	// コンテキストメニュー表示
	@Override
	public void onCreateContextMenu(ContextMenu menu, View view,
			ContextMenuInfo menuInfo) {
		super.onCreateContextMenu(menu, view, menuInfo);
		menu.add(0, 0, 0, "お気に入りから削除");
	}
	
	// お気に入り削除の実行
	@Override
	public boolean onContextItemSelected(MenuItem item) {
		 
	    AdapterContextMenuInfo info = (AdapterContextMenuInfo)item.getMenuInfo();
	    // 削除するIDを取得
	    int delId = data.get(info.position).getId();
	    // データベースから削除
	    db.execSQL("DELETE FROM myfavorites WHERE id = " + delId);
	    // リストから削除
	    data.remove(info.position);
	    // アダプター更新
	    adapter.notifyDataSetChanged();
	    
		return true;
	}

	//----------------　[ログイン]ボタンクリック時に呼び出されるメソッド
	public void btnLogin_onClick(View view){
			
	// LoginActivityへのインテントを作成
		Intent i = new Intent(this, LoginActivity.class);
	// アクティビティを起動
		startActivity(i);
	}	
		
//----------------　[メニュー]ボタンクリック時に呼び出されるメソッド
	public void btnMenu_onClick(View view){
			
//	// SearchResultActivityへのインテントを作成
//		Intent i = new Intent(this, MainActivity.class);
//	// アクティビティを起動
//		startActivity(i);
		
	// SearchResultActivityを終了
		finish();
	}
		
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}	
}
